Graphene & Droidium in action
Who are we?
-
Juraj Húska
-
RichFaces QE, Graphene commiter
-
@jhuska
-
Štefan Miklošovič
-
Lead of Arquillian Droidium
-
@smikloso
Agenda
-
Graphene introduction
-
Graphene hottest goodies
-
Droidium introduction
-
Droidium in action
What is Arquillian Graphene ?
Writing and maintaining tests
Writing and maintaining tests
Testers
Arquillian
-
Integration framework for other test tools
-
Supports all CI, CLI and IDE
-
Extensible
Arquillian crash course
JUnit runner & client mode
Injecting URL and browser
Deployment definition
Test method
Rewrap
Arquillian Graphene
-
WebDriver on steroids
-
Painkiller for web UI testers
Graphene crash course
Wiring up page & test
Graphene test
Graphene 2.0.0.Final(ly) Released
@JQueryLocator
@Page Objects
-
well known WebDriver pattern
-
make tests more readable
-
Graphene enhances its usability
What is wrong ?
Page objects declaration
Page objects declaration
Test with page objects
@Page annotation
Test with page objects
Improved maintenance, from this
to this
Page Fragments
-
reusability
-
readability
-
cross browser testing
Page fragments declaration
Wiring up fragment & page
Services of fragment
Help methods of fragment
Page fragments injection
Declaring fragment root element
Test with page fragments
Improved DRY, from this
to this
@InFrame - plain WebDriver
@InFrame - plain WebDriver
@InFrame - plain WebDriver
@InFrame - plain WebDriver
@InFrame - Graphene way
@InFrame - Graphene way
@InFrame - Graphene way
What is wrong ?
This!
@Location over page object declaration
@Location over page object declaration
@InitialPage
@InitialPage
Graphene.goTo
Graphene.goTo
-
Interceptors
-
JavaScript Interfaces
-
Request guards
-
Fluent Waiting API
-
Multiple browsers
-
…and other Graphene goodies …
Graphene & Droidium
Wanna test some mobile, huh?
Droidium from high level
-
Extension for Arquillian
-
Glues together
-
And droid
-
Selen ium WebDriver
-
Arquillian Drone
-
Arquillian Graphene
Concept of Arquillian containers
-
What it container?
-
Container modes
-
Remote container
-
Managed container
-
Droidium supports both
-
managed in Droidium
-
remote in Droidium
-
Droidium is container adapter for Android
What does Droidium solve?
-
It ftests web apps on AS from Android
-
by web plugin
-
Uses "Android server" from Selenium
-
It ftests native Android apps
-
by native plugin
Role of Selendroid in Droidium
-
Selendroid is APK installed beside of AUT
-
Instruments AUT
-
Translates JSON wire protocol to Android native calls which drive applications
Web testing workflow
-
code your web application
-
start containers
-
deploy web app to AS
-
test web app on Android
Native testing workflow
-
code your Android application
-
start Android container
-
install it to Android (as-is)
-
start Android activities
-
test native app
No difference between web and native testing
Wrapping it up
-
integrates application servers with Android
-
tests complex usage scenarios
-
no bootstrapping on your part
-
fast turnaround with remote containers (TDD)
-
cloud ready - Travis, CloudBees
Q&A